package com.cms.jy.draft.entity;

import lombok.Data;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 效果实体类
 */
@Data
public class Effect {
    /**
     * 调整参数
     */
    private List<EffectParam> adjust_params;
    
    /**
     * 算法产物路径
     */
    private String algorithm_artifact_path;
    
    /**
     * 应用目标类型
     */
    private int apply_target_type;
    
    /**
     * Bloom参数
     */
    private Object bloom_params;
    
    /**
     * 分类ID
     */
    private String category_id;
    
    /**
     * 分类名称
     */
    private String category_name;
    
    /**
     * 颜色匹配信息
     */
    private ColorMatchInfo color_match_info;
    
    /**
     * 效果ID
     */
    private String effect_id;
    
    /**
     * 启用肤色校正
     */
    private boolean enable_skin_tone_correction;
    
    /**
     * 排除组
     */
    private List<Object> exclusion_group;
    
    /**
     * 人脸调整参数
     */
    private List<Object> face_adjust_params;
    
    /**
     * 公式ID
     */
    private String formula_id;
    
    /**
     * ID
     */
    private String id;
    
    /**
     * 强度键
     */
    private String intensity_key;
    
    /**
     * 多语言当前设置
     */
    private String multi_language_current;
    
    /**
     * 名称
     */
    private String name;
    
    /**
     * 面板ID
     */
    private String panel_id;
    
    /**
     * 路径
     */
    private String path;
    
    /**
     * 平台
     */
    private String platform;
    
    /**
     * 请求ID
     */
    private String request_id;
    
    /**
     * 资源ID
     */
    private String resource_id;
    
    /**
     * 来源平台
     */
    private int source_platform;
    
    /**
     * 子类型
     */
    private String sub_type;
    
    /**
     * 时间范围
     */
    private Object time_range;
    
    /**
     * 类型
     */
    private String type;
    
    /**
     * 值
     */
    private double value;
    
    /**
     * 版本
     */
    private String version;

    private boolean is_vip;

    private String md5;

    /**
     * 根据Python Effect_meta构造函数参数创建Effect对象（包含参数列表）
     * @param name 特效名称
     * @param isVip 是否为VIP特效
     * @param resourceId 资源ID
     * @param md5 效果id
     * @param effectId 特效ID
     * @param params 参数列表
     */
    public Effect(String name, boolean isVip, String resourceId, String effectId, String md5, EffectParam ...params) {
        this.name = name;
        this.resource_id = resourceId;
        this.effect_id = effectId;
        this.id = java.util.UUID.randomUUID().toString();
        this.is_vip = isVip;
        this.md5 = md5;
        List<EffectParam> param = new ArrayList<>();
        param.addAll(Arrays.asList(params));
        this.adjust_params = param;
    }
    public Effect() {
    }

}